<?php

/**
 * This is the model class for table "proceso".
 *
 * The followings are the available columns in table 'proceso':
 * @property string $idProceso
 * @property integer $idTipoProceso
 * @property string $idUsuario
 * @property string $fecha
 * @property string $idSolicitud
 * @property integer $idEstadoProceso
 */
class Proceso extends CActiveRecord
{
	/**
	 * Returns the static model of the specified AR class.
	 * @param string $className active record class name.
	 * @return Proceso the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'proceso';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('idProceso, idTipoProceso, idUsuario, fecha, idSolicitud, idEstadoProceso', 'required','message'=>'El campo: {attribute} es requerido'),
			//array('idProceso', 'unique'),
			array('idTipoProceso, idEstadoProceso', 'numerical', 'integerOnly'=>true),
			array('idProceso, idUsuario, idSolicitud', 'length', 'max'=>25),
			array('fecha', 'safe'),
			// The following rule is used by search().
			// Please remove those attributes that should not be searched.
			array('idProceso, idTipoProceso, idUsuario, fecha, idSolicitud, idEstadoProceso', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
		//'r_proceso'=>array(self::BELONGS_TO, 'detalleproceso','idProducto');
		'r_usuario'=>array(self::BELONGS_TO, 'Usuario','idUsuario'),
		'r_detproceso'=>array(self::HAS_MANY,'detalleproceso','idProceso'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'idProceso' => 'Id Proceso',
			'idTipoProceso' => 'Id Tipo Proceso',
			'idUsuario' => 'Id Usuario',
			'fecha' => 'Fecha',
			'idSolicitud' => 'Id Solicitud',
			'idEstadoProceso' => 'Id Estado Proceso',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
	 */
	public function search()
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.
                Detalleproceso::model()->relations();
				
        //$criteria->with = array('r_detproceso');
		
        //$criteria->addSearchCondition('r_detproceso.nombre', $this->Nombre_Proveedor);
		
		$criteria=new CDbCriteria;

		$criteria->compare('idProceso',$this->idProceso,true);
		$criteria->compare('idTipoProceso',$this->idTipoProceso);
		$criteria->compare('idUsuario',$this->idUsuario,true);
		$criteria->compare('fecha',$this->fecha,true);
		$criteria->compare('idSolicitud',$this->idSolicitud,true);
		$criteria->compare('idEstadoProceso',$this->idEstadoProceso);
                
                
                $criteria2=new CDbCriteria;

		$criteria2->compare('idDetalleProceso',  Detalleproceso::model()->idDetalleProceso,true);
		$criteria2->compare('idProducto',Detalleproceso::model()->idProducto,true);
		$criteria2->compare('cantidad',Detalleproceso::model()->cantidad);
		$criteria2->compare('descripcion',Detalleproceso::model()->descripcion,true);
		$criteria2->compare('idProceso',$this->idProceso);
		$criteria2->compare('idUsuario',$this->idUsuario);

		    $_SESSION['datos_filtrados'] = new CActiveDataProvider($this, array(
                'criteria'=>$criteria,
                     
                'pagination'=>false,
        ));
                
                $_SESSION['datos_filtrados2'] = new CActiveDataProvider(Detalleproceso::model(), array(
                'criteria'=>$criteria2,
                     
                'pagination'=>false,
        ));
              
			  
			  	$sort=new CSort; 
		$sort->attributes=array(
								//'defaultOrder'=>'CAST(idProceso AS UNSIGNED) DESC',
                                'idProceso'=>array(
                                    'asc'=>'CAST(idProceso AS UNSIGNED) ASC', 
                                           
                                    'desc'=>'CAST(idProceso AS UNSIGNED) DESC', 
                                ),
                                
        );                         
		
		
		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
					'sort'=>array('defaultOrder'=>'CAST(idProceso AS UNSIGNED) DESC'),
					
		));
		
		
		
	}
	public function searchProceso($usuario)
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('idProceso',$this->idProceso,true);
		$criteria->compare('idTipoProceso',$this->idTipoProceso);
		$criteria->compare('idUsuario',$usuario);//crear parametro
		$criteria->compare('fecha',$this->fecha,true);
		$criteria->compare('idSolicitud',$this->idSolicitud,true);
		$criteria->compare('idEstadoProceso',$this->idEstadoProceso);

		
		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}
        public function search2($tipo)
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('idProceso',$this->idProceso,true);
		$criteria->compare('idTipoProceso',$tipo,true);
		$criteria->compare('idUsuario',$this->idUsuario,true);
		$criteria->compare('fecha',$this->fecha,true);
		$criteria->compare('idSolicitud',$this->idSolicitud,true);
		$criteria->compare('idEstadoProceso',$this->idEstadoProceso);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}
	
		public function behaviors()
{
    return array(
        'LoggableBehavior'=>
            'application.modules.auditTrail.behaviors.LoggableBehavior',
    );
}	

	
	
public function validatePassword($contrasena)
	{
		return $this->hashPassword($contrasena) === $this->contrasena;
	}
 
	public function hashPassword($contrasena)
	{
		return $contrasena;
	}


	
}